/**
 * 
 * 最长回文子串
 * 
 * 描述

对于长度为n的一个字符串A（仅包含数字，大小写英文字母），请设计一个高效算法，计算其中最长回文子串的长度。

数据范围： 
1
≤
n
≤
1000
1≤n≤1000
要求：空间复杂度 
O
(
1
)
O(1)，时间复杂度 
O
(
n
2
)
O(n 
2
 )
进阶:  空间复杂度 
O
(
n
)
O(n)，时间复杂度 
O
(
n
)
O(n)
 */
public class 最长回文子串 {
    
    public static void main(String[] args) {
        
        System.out.println(getLongestPalindrome("bc"));

    }

     /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     * 
     * @param A string字符串 
     * @return int整型
     */
    public static int getLongestPalindrome (String A) {
        // write code here

        if(null==A || "".equals(A)) return 0;
        if(A.length() == 1) return 1;

        int maxLen = 1;
        int winLen = 2;

        for(int i=0; i<A.length(); i++){
            winLen = 2;
            for(;winLen<=A.length(); winLen++){

                String sub = A.substring(i, (i+winLen > A.length())?A.length():i+winLen);
                StringBuilder build = new StringBuilder(sub);
                
                if(sub.length() >1 && sub.equals(build.reverse().toString())){

                    maxLen = Math.max(maxLen, sub.length());
                }

            }

        }

        return maxLen;
    }
}
